
package com.wiz.test.demo.data.entity;

import java.util.ArrayList;
import java.util.List;

public class TUserExample {

	protected String orderByClause;
	protected boolean distinct;
	protected List<Criteria> oredCriteria;
	protected Integer offset;
	protected Integer rows;

	public TUserExample() {
		oredCriteria = new ArrayList<Criteria>();
	}

	public void setOrderByClause(String orderByClause) {
		this.orderByClause = orderByClause;
	}

	public String getOrderByClause() {
		return orderByClause;
	}

	public void setDistinct(boolean distinct) {
		this.distinct = distinct;
	}

	public boolean isDistinct() {
		return distinct;
	}

	public List<Criteria> getOredCriteria() {
		return oredCriteria;
	}

	public void or(Criteria criteria) {
		oredCriteria.add(criteria);
	}

	public Criteria or() {
		Criteria criteria = createCriteriaInternal();
		oredCriteria.add(criteria);
		return criteria;
	}

	public TUserExample orderBy(String orderByClause) {
		this.setOrderByClause(orderByClause);
		return this;
	}

	public TUserExample orderBy(String... orderByClauses) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < orderByClauses.length; i++) {
			sb.append(orderByClauses[i]);
			if (i < orderByClauses.length - 1) {
				sb.append(" , ");
			}
		}
		this.setOrderByClause(sb.toString());
		return this;
	}

	public Criteria createCriteria() {
		Criteria criteria = createCriteriaInternal();
		if (oredCriteria.size() == 0) {
			oredCriteria.add(criteria);
		}
		return criteria;
	}

	protected Criteria createCriteriaInternal() {
		Criteria criteria = new Criteria(this);
		return criteria;
	}

	public void clear() {
		oredCriteria.clear();
		orderByClause = null;
		distinct = false;
		rows = null;
		offset = null;
	}

	public void setOffset(Integer offset) {
		this.offset = offset;
	}

	public Integer getOffset() {
		return this.offset;
	}

	public void setRows(Integer rows) {
		this.rows = rows;
	}

	public Integer getRows() {
		return this.rows;
	}

	public TUserExample limit(Integer rows) {
		this.rows = rows;
		return this;
	}

	public TUserExample limit(Integer offset, Integer rows) {
		this.offset = offset;
		this.rows = rows;
		return this;
	}

	public TUserExample page(Integer page, Integer pageSize) {
		this.offset = page * pageSize;
		this.rows = pageSize;
		return this;
	}

	public static Criteria newAndCreateCriteria() {
		TUserExample example = new TUserExample();
		return example.createCriteria();
	}

	public TUserExample when(boolean condition, IExampleWhen then) {
		if (condition) {
			then.example(this);
		}
		return this;
	}

	public TUserExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {
		if (condition) {
			then.example(this);
		} else {
			otherwise.example(this);
		}
		return this;
	}

	protected abstract static class GeneratedCriteria {

		protected List<Criterion> criteria;

		protected GeneratedCriteria() {
			super();
			criteria = new ArrayList<Criterion>();
		}

		public boolean isValid() {
			return criteria.size() > 0;
		}

		public List<Criterion> getAllCriteria() {
			return criteria;
		}

		public List<Criterion> getCriteria() {
			return criteria;
		}

		protected void addCriterion(String condition) {
			if (condition == null) {
				throw new RuntimeException("Value for condition cannot be null");
			}
			criteria.add(new Criterion(condition));
		}

		protected void addCriterion(String condition, Object value, String property) {
			if (value == null) {
				throw new RuntimeException("Value for " + property + " cannot be null");
			}
			criteria.add(new Criterion(condition, value));
		}

		protected void addCriterion(String condition, Object value1, Object value2, String property) {
			if (value1 == null || value2 == null) {
				throw new RuntimeException("Between values for " + property + " cannot be null");
			}
			criteria.add(new Criterion(condition, value1, value2));
		}

		public Criteria andUserIdIsNull() {
			addCriterion("user_id is null");
			return (Criteria) this;
		}

		public Criteria andUserIdIsNotNull() {
			addCriterion("user_id is not null");
			return (Criteria) this;
		}

		public Criteria andUserIdEqualTo(Integer value) {
			addCriterion("user_id =", value, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_id = ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserIdNotEqualTo(Integer value) {
			addCriterion("user_id <>", value, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdNotEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_id <> ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserIdGreaterThan(Integer value) {
			addCriterion("user_id >", value, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdGreaterThanColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_id > ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {
			addCriterion("user_id >=", value, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdGreaterThanOrEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_id >= ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserIdLessThan(Integer value) {
			addCriterion("user_id <", value, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdLessThanColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_id < ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserIdLessThanOrEqualTo(Integer value) {
			addCriterion("user_id <=", value, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdLessThanOrEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_id <= ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserIdIn(List<Integer> values) {
			addCriterion("user_id in", values, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdNotIn(List<Integer> values) {
			addCriterion("user_id not in", values, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdBetween(Integer value1, Integer value2) {
			addCriterion("user_id between", value1, value2, "userId");
			return (Criteria) this;
		}

		public Criteria andUserIdNotBetween(Integer value1, Integer value2) {
			addCriterion("user_id not between", value1, value2, "userId");
			return (Criteria) this;
		}

		public Criteria andUserNameIsNull() {
			addCriterion("user_name is null");
			return (Criteria) this;
		}

		public Criteria andUserNameIsNotNull() {
			addCriterion("user_name is not null");
			return (Criteria) this;
		}

		public Criteria andUserNameEqualTo(String value) {
			addCriterion("user_name =", value, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_name = ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserNameNotEqualTo(String value) {
			addCriterion("user_name <>", value, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameNotEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_name <> ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserNameGreaterThan(String value) {
			addCriterion("user_name >", value, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameGreaterThanColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_name > ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserNameGreaterThanOrEqualTo(String value) {
			addCriterion("user_name >=", value, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameGreaterThanOrEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_name >= ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserNameLessThan(String value) {
			addCriterion("user_name <", value, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameLessThanColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_name < ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserNameLessThanOrEqualTo(String value) {
			addCriterion("user_name <=", value, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameLessThanOrEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("user_name <= ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andUserNameLike(String value) {
			addCriterion("user_name like", value, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameNotLike(String value) {
			addCriterion("user_name not like", value, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameIn(List<String> values) {
			addCriterion("user_name in", values, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameNotIn(List<String> values) {
			addCriterion("user_name not in", values, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameBetween(String value1, String value2) {
			addCriterion("user_name between", value1, value2, "userName");
			return (Criteria) this;
		}

		public Criteria andUserNameNotBetween(String value1, String value2) {
			addCriterion("user_name not between", value1, value2, "userName");
			return (Criteria) this;
		}

		public Criteria andPasswordIsNull() {
			addCriterion("`password` is null");
			return (Criteria) this;
		}

		public Criteria andPasswordIsNotNull() {
			addCriterion("`password` is not null");
			return (Criteria) this;
		}

		public Criteria andPasswordEqualTo(String value) {
			addCriterion("`password` =", value, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("`password` = ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPasswordNotEqualTo(String value) {
			addCriterion("`password` <>", value, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordNotEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("`password` <> ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPasswordGreaterThan(String value) {
			addCriterion("`password` >", value, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordGreaterThanColumn(TUser.Column column) {
			addCriterion(new StringBuilder("`password` > ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPasswordGreaterThanOrEqualTo(String value) {
			addCriterion("`password` >=", value, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordGreaterThanOrEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("`password` >= ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPasswordLessThan(String value) {
			addCriterion("`password` <", value, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordLessThanColumn(TUser.Column column) {
			addCriterion(new StringBuilder("`password` < ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPasswordLessThanOrEqualTo(String value) {
			addCriterion("`password` <=", value, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordLessThanOrEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("`password` <= ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPasswordLike(String value) {
			addCriterion("`password` like", value, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordNotLike(String value) {
			addCriterion("`password` not like", value, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordIn(List<String> values) {
			addCriterion("`password` in", values, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordNotIn(List<String> values) {
			addCriterion("`password` not in", values, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordBetween(String value1, String value2) {
			addCriterion("`password` between", value1, value2, "password");
			return (Criteria) this;
		}

		public Criteria andPasswordNotBetween(String value1, String value2) {
			addCriterion("`password` not between", value1, value2, "password");
			return (Criteria) this;
		}

		public Criteria andPhoneIsNull() {
			addCriterion("phone is null");
			return (Criteria) this;
		}

		public Criteria andPhoneIsNotNull() {
			addCriterion("phone is not null");
			return (Criteria) this;
		}

		public Criteria andPhoneEqualTo(String value) {
			addCriterion("phone =", value, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("phone = ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPhoneNotEqualTo(String value) {
			addCriterion("phone <>", value, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneNotEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("phone <> ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPhoneGreaterThan(String value) {
			addCriterion("phone >", value, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneGreaterThanColumn(TUser.Column column) {
			addCriterion(new StringBuilder("phone > ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPhoneGreaterThanOrEqualTo(String value) {
			addCriterion("phone >=", value, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneGreaterThanOrEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("phone >= ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPhoneLessThan(String value) {
			addCriterion("phone <", value, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneLessThanColumn(TUser.Column column) {
			addCriterion(new StringBuilder("phone < ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPhoneLessThanOrEqualTo(String value) {
			addCriterion("phone <=", value, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneLessThanOrEqualToColumn(TUser.Column column) {
			addCriterion(new StringBuilder("phone <= ").append(column.getEscapedColumnName()).toString());
			return (Criteria) this;
		}

		public Criteria andPhoneLike(String value) {
			addCriterion("phone like", value, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneNotLike(String value) {
			addCriterion("phone not like", value, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneIn(List<String> values) {
			addCriterion("phone in", values, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneNotIn(List<String> values) {
			addCriterion("phone not in", values, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneBetween(String value1, String value2) {
			addCriterion("phone between", value1, value2, "phone");
			return (Criteria) this;
		}

		public Criteria andPhoneNotBetween(String value1, String value2) {
			addCriterion("phone not between", value1, value2, "phone");
			return (Criteria) this;
		}
	}

	public static class Criteria extends GeneratedCriteria {

		private TUserExample example;

		protected Criteria(TUserExample example) {
			super();
			this.example = example;
		}

		public TUserExample example() {
			return this.example;
		}

		@Deprecated
		public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {
			if (ifAdd) {
				add.add(this);
			}
			return this;
		}

		public Criteria when(boolean condition, ICriteriaWhen then) {
			if (condition) {
				then.criteria(this);
			}
			return this;
		}

		public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {
			if (condition) {
				then.criteria(this);
			} else {
				otherwise.criteria(this);
			}
			return this;
		}

		@Deprecated
		public interface ICriteriaAdd {
			Criteria add(Criteria add);
		}
	}

	public static class Criterion {

		private String condition;
		private Object value;
		private Object secondValue;
		private boolean noValue;
		private boolean singleValue;
		private boolean betweenValue;
		private boolean listValue;
		private String typeHandler;

		public String getCondition() {
			return condition;
		}

		public Object getValue() {
			return value;
		}

		public Object getSecondValue() {
			return secondValue;
		}

		public boolean isNoValue() {
			return noValue;
		}

		public boolean isSingleValue() {
			return singleValue;
		}

		public boolean isBetweenValue() {
			return betweenValue;
		}

		public boolean isListValue() {
			return listValue;
		}

		public String getTypeHandler() {
			return typeHandler;
		}

		protected Criterion(String condition) {
			super();
			this.condition = condition;
			this.typeHandler = null;
			this.noValue = true;
		}

		protected Criterion(String condition, Object value, String typeHandler) {
			super();
			this.condition = condition;
			this.value = value;
			this.typeHandler = typeHandler;
			if (value instanceof List<?>) {
				this.listValue = true;
			} else {
				this.singleValue = true;
			}
		}

		protected Criterion(String condition, Object value) {
			this(condition, value, null);
		}

		protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
			super();
			this.condition = condition;
			this.value = value;
			this.secondValue = secondValue;
			this.typeHandler = typeHandler;
			this.betweenValue = true;
		}

		protected Criterion(String condition, Object value, Object secondValue) {
			this(condition, value, secondValue, null);
		}
	}

	public interface ICriteriaWhen {
		void criteria(Criteria criteria);
	}

	public interface IExampleWhen {
		void example(com.wiz.test.demo.data.entity.TUserExample example);
	}
}